Short: V1.2: hardware clock at GMT util
Type: util/time
Uploader: pueschel@imsdd.meb.uni-bonn.de
Author: pueschel@imsdd.meb.uni-bonn.de

ClockDaemon 1.2


Features:
---------

 - Keeps your hardware clock at GMT (for NetBSD users).
 - Patches battclock.resource so that reads and writes to the hardware
   clock are transparently adjusted.
 - Handles daylight savings time.
 - Does not need ixemul.library.
 - Sets IXGMTOFFSET for ixemul.library V 42+.

 - NEW ! Detects DST start & end while computer is running.
 - NEW ! Optionally runs command when DST begins or ends.
 - NEW ! DSTCheck program for use in scripts.

Installation:
-------------

Copy ClockDaemon and DSTCheck to C:, and add "run >NIL: ClockDaemon <command>"
to your User-Startup, where <command> is a program you want to be executed when
daylight savings time begins or ends. Store an appropriate (see below) timezone
string in ENVARC:TZ.

ClockDaemon will set the IXGMTOFFSET variable for ixemul.library V 42 or
higher. Do not use ixtimezone !

Reboot and reset your clock to your local time via the Time preferences
program.

Since version 1.2, ClockDaemon notices the start or end of daylight savings
time regardless if your computer is running at that time or not. (If it is not
running, the change command will be executed the next time it is switched on.)

ATTENTION: The command you want to have executed must terminate or ClockDaemon
           will hang !

Example (for Germany):
----------------------

User-Startup:

run >NIL: ClockDaemon "avail flush" ; to adapt ixemul.library to new DST setting


ENVARC:TZ:

MET-1MEST,M3.5.0,M9.5.0/03


DSTCheck:
---------

The DSTCheck command gives you an easy way to check the DST status in CLI
scripts. Its return status is WARN (5) during DST, OK (0) otherwise.

Example:

DSTCheck

If Warn
  Echo "We have DST !"
Else
  Echo "We don't have DST !"
Endif

Timezone strings:
-----------------

This is a description of valid timezone strings for ENV[ARC]:TZ:

"XPG3TZ - time zone information"

The form of the time zone information is based on the XPG3 specification of
the TZ environment variable.  Spaces are allowed only in timezone
designations, where they are significant.  The following description
closely follows the XPG3 specification, except for the paragraphs starting
**CLARIFICATION**.

<std><offset>[<dst>[<offset>],<start>[/<time>],<end>[/<time>]]

Where:

<std> and <dst>
	Are each three or more bytes that are the designation for the
	standard (<std>) and daylight savings time (<dst>) timezones.
	Only <std> is required - if <dst> is missing, then daylight
	savings time does not apply in this locale.  Upper- and
	lower-case letters are allowed.  Any characters except a
	leading colon (:), digits, a comma (,), a minus (-) or a plus
	(+) are allowed.

	**CLARIFICATION**  The two-byte designation `UT' is permitted.

<offset>
	Indicates the value one must add to the local time to arrive
	at Coordinated Universal Time.	The offset has the form:
	<hh>[:<mm>[:<ss>]]

	The minutes <mm> and seconds <ss> are optional.  The hour <hh>
	is required and may be a single digit.	The offset following
	<std> is required.  If no offset follows <dst>, daylight savings
	time is assumed to be one hour ahead of standard time.	One or
	more digits may be used; the value is always interpreted as a
	decimal number.  The hour must be between 0 and 24, and the
	minutes (and seconds) if present between 0 and 59.  Out of
	range values may cause unpredictable behavior.	If preceded by
	a `-', the timezone is east of the Prime Meridian; otherwise
	it is west (which may be indicated by an optional preceding
	`+' sign).

	**CLARIFICATION**  No more than two digits are allowed in any
	of <hh>, <mm> or <ss>.	Leading zeros are permitted.

<start>/<time> and <end>/<time>
	Indicates when to change to and back from daylight savings
	time, where <start>/<time> describes when the change from
	standard time to daylight savings time occurs, and
	<end>/<time> describes when the change back happens.  Each
	<time> field describes when, in current local time, the change
	is made.

	**CLARIFICATION**  It is recognized that in the Southern
	hemisphere <start> will specify a date later than <end>.

	The formats of <start> and <end> are one of the following:

	J<n>	The Julian day <n> (1 < <n> < 365).  Leap days are not
		counted.  That is, in all years, February 28 is day 59
		and March 1 is day 60.	It is impossible to refer to
		the occasional February 29.

	<n>	The zero-based Julian day (0 < <n> < 365).  Leap days
		are counted, and it is possible to refer to February
		29.

	M<m>.<n>.<d>
		The <d>th day, (0 < <d> < 6) of week <n> of month <m>
		of the year (1 < <n> < 5, 1 < <m> < 12), where week 5
		means `the last <d>-day in month <m>' (which may occur
		in either the fourth or the fifth week).  Week 1 is
		the first week in which the <d>th day occurs.  Day
		zero is Sunday.

		**CLARIFICATION**  Neither <n> nor <m> may have a
		leading zero.  <d> must be a single digit.

		**CLARIFICATION**  If <dst> is given then <start>
		and <end> are required - there is no `implementation
		specific default'.

	<time> has the same format as <offset> except that no leading
	sign (`-' or `+') is allowed.  The default, if <time> is not
	given is 02:00:00.

	**CLARIFICATION**  The number of hours in <time> may be up
	to 167, to allow encoding of rules such as `00:00hrs on the
	Sunday after the second Friday in September'


Legal Stuff:
------------

There is no warranty. ClockDaemon is Freeware.

Credits:
--------

I borrowed the timezone string description from another package
(SetTZ or TZSet or something like that). Anyway, a big "thank you"
to the author.

The idea to run a script at DST start/end came from Henning Hucke.

And finally, a big "Thank You !" to Steve, Doug and Jim at SAS.

History:
--------

Version 1.0: Not released.

        1.1: Added ixemul V 42 support.

        1.2: Added DSTCHANGECOMMAND.
             Added detection of DST start/end while computer is on.
             Added DSTCheck command.

Bug reports & suggestions:
--------------------------

Send bug reports & suggestions to pueschel@imsdd.meb.uni-bonn.de.
